/*
kunpengsecl licensed under the Mulan PSL v2.
You can use this software according to the terms and conditions of
the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
    http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/

package kcmstools

import (
	"encoding/base64"
	"os"
	"testing"
	"time"

	kmsServer "gitee.com/openeuler/kunpengsecl/attestation/kms"
	"gitee.com/openeuler/kunpengsecl/attestation/ras/cache"
	"gitee.com/openeuler/kunpengsecl/attestation/ras/kcms/kdb"
	"gitee.com/openeuler/kunpengsecl/attestation/ras/trustmgr"
)

const (
	constDB                = "postgres"
	constDNS               = "user=postgres password=postgres dbname=kunpengsecl host=localhost port=5432 sslmode=disable"
	constsavekeyinfofailed = "save key information fail %v"
	constfindkeyinfofailed = "find key information fail %v"
	constsavektacertfailed = "save KTA Cert failed %v"
	constgetcachefailed    = "get cache by deviceId failed :%v"
)

var (
	rootcert = []byte{
		0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46,
		0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x44, 0x67, 0x7a,
		0x43, 0x43, 0x41, 0x6d, 0x75, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x55, 0x51, 0x6c, 0x33,
		0x59, 0x56, 0x61, 0x5a, 0x50, 0x53, 0x72, 0x41, 0x62, 0x49, 0x45, 0x7a, 0x55, 0x66, 0x6a, 0x4d, 0x33,
		0x47, 0x5a, 0x37, 0x4b, 0x4a, 0x44, 0x41, 0x77, 0x44, 0x51, 0x59, 0x4a, 0x4b, 0x6f, 0x5a, 0x49, 0x68,
		0x76, 0x63, 0x4e, 0x41, 0x51, 0x45, 0x4c, 0x0a, 0x42, 0x51, 0x41, 0x77, 0x55, 0x54, 0x45, 0x4c, 0x4d,
		0x41, 0x6b, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x45, 0x54,
		0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x46, 0x4e, 0x6f, 0x59, 0x57, 0x35,
		0x6e, 0x61, 0x47, 0x46, 0x70, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48,
		0x44, 0x41, 0x68, 0x54, 0x0a, 0x61, 0x47, 0x46, 0x75, 0x5a, 0x32, 0x68, 0x68, 0x61, 0x54, 0x45, 0x50,
		0x4d, 0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x47, 0x53, 0x48, 0x56, 0x68, 0x64,
		0x32, 0x56, 0x70, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41,
		0x4a, 0x6a, 0x59, 0x54, 0x41, 0x65, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x6a, 0x45, 0x78, 0x4d, 0x6a, 0x55,
		0x77, 0x0a, 0x4d, 0x7a, 0x51, 0x31, 0x4e, 0x44, 0x68, 0x61, 0x46, 0x77, 0x30, 0x79, 0x4d, 0x7a, 0x45,
		0x78, 0x4d, 0x54, 0x59, 0x77, 0x4d, 0x7a, 0x51, 0x31, 0x4e, 0x44, 0x68, 0x61, 0x4d, 0x46, 0x45, 0x78,
		0x43, 0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6b, 0x4e, 0x4f, 0x4d,
		0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x49, 0x44, 0x41, 0x68, 0x54, 0x0a, 0x61,
		0x47, 0x46, 0x75, 0x5a, 0x32, 0x68, 0x68, 0x61, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31,
		0x55, 0x45, 0x42, 0x77, 0x77, 0x49, 0x55, 0x32, 0x68, 0x68, 0x62, 0x6d, 0x64, 0x6f, 0x59, 0x57, 0x6b,
		0x78, 0x44, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x42, 0x6b, 0x68, 0x31,
		0x59, 0x58, 0x64, 0x6c, 0x61, 0x54, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47, 0x0a, 0x41, 0x31, 0x55, 0x45,
		0x41, 0x77, 0x77, 0x43, 0x59, 0x32, 0x45, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43,
		0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34,
		0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43,
		0x78, 0x32, 0x44, 0x37, 0x50, 0x72, 0x75, 0x39, 0x49, 0x0a, 0x52, 0x78, 0x37, 0x6d, 0x4d, 0x69, 0x35,
		0x39, 0x4a, 0x5a, 0x37, 0x77, 0x48, 0x7a, 0x33, 0x70, 0x44, 0x38, 0x54, 0x4b, 0x58, 0x36, 0x34, 0x61,
		0x78, 0x42, 0x64, 0x70, 0x4a, 0x52, 0x47, 0x57, 0x35, 0x33, 0x79, 0x74, 0x78, 0x48, 0x74, 0x30, 0x50,
		0x6d, 0x35, 0x70, 0x62, 0x73, 0x2b, 0x55, 0x54, 0x58, 0x63, 0x58, 0x47, 0x6d, 0x6c, 0x75, 0x42, 0x53,
		0x76, 0x72, 0x6a, 0x68, 0x65, 0x75, 0x0a, 0x2b, 0x74, 0x4a, 0x47, 0x67, 0x76, 0x73, 0x74, 0x49, 0x69,
		0x63, 0x4b, 0x37, 0x6d, 0x69, 0x65, 0x35, 0x68, 0x39, 0x4e, 0x50, 0x41, 0x55, 0x67, 0x5a, 0x58, 0x6f,
		0x65, 0x46, 0x68, 0x5a, 0x2b, 0x4f, 0x41, 0x72, 0x59, 0x65, 0x38, 0x59, 0x39, 0x74, 0x47, 0x4f, 0x61,
		0x70, 0x6d, 0x67, 0x4a, 0x5a, 0x36, 0x39, 0x68, 0x75, 0x4c, 0x47, 0x77, 0x32, 0x42, 0x45, 0x70, 0x4d,
		0x65, 0x42, 0x63, 0x0a, 0x56, 0x56, 0x76, 0x36, 0x51, 0x41, 0x67, 0x45, 0x6e, 0x38, 0x66, 0x4c, 0x4a,
		0x47, 0x36, 0x4c, 0x75, 0x72, 0x32, 0x71, 0x78, 0x32, 0x39, 0x72, 0x6a, 0x42, 0x57, 0x54, 0x4d, 0x74,
		0x65, 0x6a, 0x6c, 0x47, 0x6f, 0x72, 0x53, 0x46, 0x58, 0x46, 0x36, 0x56, 0x58, 0x55, 0x34, 0x43, 0x51,
		0x66, 0x6b, 0x6a, 0x75, 0x69, 0x6b, 0x4c, 0x4f, 0x32, 0x59, 0x70, 0x6e, 0x6a, 0x4e, 0x2b, 0x64, 0x51,
		0x0a, 0x6c, 0x45, 0x42, 0x64, 0x48, 0x58, 0x7a, 0x64, 0x53, 0x7a, 0x56, 0x37, 0x73, 0x76, 0x50, 0x32,
		0x4b, 0x32, 0x66, 0x44, 0x35, 0x36, 0x58, 0x53, 0x79, 0x65, 0x2b, 0x37, 0x59, 0x36, 0x67, 0x65, 0x72,
		0x37, 0x48, 0x2f, 0x4a, 0x6d, 0x49, 0x51, 0x65, 0x56, 0x49, 0x6d, 0x63, 0x5a, 0x6b, 0x69, 0x78, 0x76,
		0x4c, 0x34, 0x44, 0x6f, 0x4f, 0x4a, 0x70, 0x6c, 0x69, 0x4c, 0x48, 0x57, 0x38, 0x75, 0x0a, 0x76, 0x59,
		0x65, 0x6d, 0x55, 0x6b, 0x77, 0x35, 0x79, 0x4b, 0x4d, 0x6d, 0x2f, 0x6b, 0x57, 0x6f, 0x37, 0x73, 0x41,
		0x72, 0x48, 0x50, 0x78, 0x56, 0x7a, 0x38, 0x6e, 0x4a, 0x4e, 0x77, 0x32, 0x42, 0x43, 0x38, 0x5a, 0x75,
		0x57, 0x65, 0x77, 0x62, 0x63, 0x58, 0x49, 0x55, 0x52, 0x71, 0x32, 0x4b, 0x7a, 0x73, 0x54, 0x76, 0x69,
		0x49, 0x34, 0x41, 0x33, 0x77, 0x33, 0x69, 0x4b, 0x53, 0x6e, 0x57, 0x0a, 0x77, 0x42, 0x56, 0x74, 0x64,
		0x6f, 0x46, 0x6f, 0x6d, 0x42, 0x44, 0x56, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x55, 0x7a,
		0x42, 0x52, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67, 0x51, 0x57, 0x42, 0x42, 0x54,
		0x54, 0x56, 0x49, 0x70, 0x4c, 0x77, 0x6d, 0x53, 0x55, 0x76, 0x35, 0x37, 0x35, 0x53, 0x6f, 0x6a, 0x48,
		0x36, 0x65, 0x49, 0x51, 0x45, 0x41, 0x66, 0x4f, 0x0a, 0x6e, 0x7a, 0x41, 0x66, 0x42, 0x67, 0x4e, 0x56,
		0x48, 0x53, 0x4d, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x54, 0x56, 0x49, 0x70, 0x4c, 0x77,
		0x6d, 0x53, 0x55, 0x76, 0x35, 0x37, 0x35, 0x53, 0x6f, 0x6a, 0x48, 0x36, 0x65, 0x49, 0x51, 0x45, 0x41,
		0x66, 0x4f, 0x6e, 0x7a, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x42, 0x41, 0x66, 0x38,
		0x45, 0x42, 0x54, 0x41, 0x44, 0x0a, 0x41, 0x51, 0x48, 0x2f, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71,
		0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42,
		0x41, 0x51, 0x43, 0x70, 0x68, 0x47, 0x42, 0x75, 0x49, 0x47, 0x35, 0x48, 0x75, 0x6c, 0x36, 0x64, 0x58,
		0x38, 0x66, 0x4e, 0x64, 0x2b, 0x6b, 0x7a, 0x72, 0x77, 0x76, 0x6b, 0x61, 0x54, 0x54, 0x48, 0x6e, 0x4c,
		0x6c, 0x64, 0x0a, 0x6b, 0x45, 0x69, 0x54, 0x59, 0x41, 0x42, 0x4f, 0x71, 0x51, 0x54, 0x65, 0x34, 0x6e,
		0x65, 0x2f, 0x53, 0x44, 0x59, 0x43, 0x65, 0x47, 0x37, 0x30, 0x38, 0x56, 0x6a, 0x49, 0x65, 0x53, 0x53,
		0x50, 0x46, 0x73, 0x66, 0x38, 0x4e, 0x50, 0x58, 0x63, 0x58, 0x31, 0x56, 0x58, 0x46, 0x70, 0x4a, 0x46,
		0x47, 0x57, 0x67, 0x56, 0x53, 0x4d, 0x45, 0x51, 0x70, 0x69, 0x73, 0x45, 0x52, 0x37, 0x57, 0x38, 0x0a,
		0x66, 0x2b, 0x38, 0x79, 0x30, 0x41, 0x4b, 0x62, 0x75, 0x65, 0x4e, 0x73, 0x37, 0x71, 0x6b, 0x30, 0x45,
		0x7a, 0x5a, 0x78, 0x5a, 0x37, 0x38, 0x51, 0x61, 0x71, 0x6f, 0x49, 0x50, 0x43, 0x68, 0x64, 0x70, 0x73,
		0x38, 0x66, 0x43, 0x30, 0x78, 0x67, 0x35, 0x47, 0x4d, 0x31, 0x76, 0x44, 0x38, 0x2f, 0x63, 0x74, 0x41,
		0x77, 0x52, 0x4a, 0x61, 0x4b, 0x6e, 0x46, 0x66, 0x4d, 0x52, 0x47, 0x74, 0x5a, 0x0a, 0x34, 0x46, 0x66,
		0x42, 0x64, 0x52, 0x57, 0x4a, 0x6a, 0x57, 0x43, 0x46, 0x31, 0x51, 0x4d, 0x50, 0x41, 0x67, 0x4e, 0x51,
		0x6a, 0x4a, 0x59, 0x66, 0x36, 0x6e, 0x4d, 0x58, 0x74, 0x35, 0x63, 0x6d, 0x34, 0x31, 0x6a, 0x69, 0x6a,
		0x41, 0x4f, 0x65, 0x58, 0x6a, 0x31, 0x4f, 0x4c, 0x61, 0x4f, 0x38, 0x4d, 0x64, 0x34, 0x6b, 0x65, 0x33,
		0x6a, 0x4f, 0x58, 0x54, 0x37, 0x5a, 0x4b, 0x30, 0x59, 0x45, 0x0a, 0x31, 0x73, 0x73, 0x57, 0x6d, 0x68,
		0x61, 0x66, 0x57, 0x30, 0x33, 0x32, 0x45, 0x33, 0x6e, 0x6f, 0x4e, 0x71, 0x44, 0x35, 0x6c, 0x68, 0x64,
		0x6a, 0x6d, 0x33, 0x5a, 0x64, 0x61, 0x2b, 0x72, 0x47, 0x6a, 0x69, 0x57, 0x30, 0x52, 0x48, 0x64, 0x79,
		0x56, 0x39, 0x37, 0x41, 0x66, 0x63, 0x44, 0x42, 0x55, 0x54, 0x74, 0x31, 0x74, 0x50, 0x38, 0x6e, 0x35,
		0x30, 0x46, 0x66, 0x51, 0x79, 0x61, 0x68, 0x0a, 0x4b, 0x75, 0x77, 0x52, 0x4d, 0x76, 0x46, 0x35, 0x4b,
		0x70, 0x68, 0x44, 0x48, 0x34, 0x6c, 0x4b, 0x61, 0x68, 0x79, 0x78, 0x6a, 0x48, 0x71, 0x66, 0x4d, 0x4e,
		0x68, 0x68, 0x73, 0x79, 0x72, 0x2f, 0x44, 0x55, 0x4e, 0x4d, 0x64, 0x78, 0x73, 0x39, 0x73, 0x53, 0x61,
		0x36, 0x79, 0x57, 0x74, 0x75, 0x42, 0x33, 0x73, 0x48, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e,
		0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d,
		0x2d, 0x0a,
	}
	ktacert = []byte{
		0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x44, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x56, 0x65, 0x72,
		0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x20, 0x28, 0x30, 0x78, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x4e, 0x75, 0x6d, 0x62, 0x65,
		0x72, 0x3a, 0x20, 0x31, 0x20, 0x28, 0x30, 0x78, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72,
		0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x57, 0x69, 0x74, 0x68, 0x52,
		0x53, 0x41, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x3d, 0x43, 0x4e, 0x2c,
		0x20, 0x53, 0x54, 0x3d, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4c, 0x3d, 0x53,
		0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4f, 0x3d, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69,
		0x2c, 0x20, 0x43, 0x4e, 0x3d, 0x63, 0x61, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x56,
		0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x3a, 0x20, 0x4e, 0x6f,
		0x76, 0x20, 0x32, 0x35, 0x20, 0x30, 0x33, 0x3a, 0x34, 0x35, 0x3a, 0x34, 0x38, 0x20, 0x32, 0x30, 0x32,
		0x32, 0x20, 0x47, 0x4d, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x4e, 0x6f, 0x74, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x3a, 0x20, 0x4e, 0x6f, 0x76, 0x20,
		0x31, 0x36, 0x20, 0x30, 0x33, 0x3a, 0x34, 0x35, 0x3a, 0x34, 0x38, 0x20, 0x32, 0x30, 0x32, 0x33, 0x20,
		0x47, 0x4d, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x75, 0x62, 0x6a, 0x65,
		0x63, 0x74, 0x3a, 0x20, 0x43, 0x3d, 0x43, 0x4e, 0x2c, 0x20, 0x53, 0x54, 0x3d, 0x53, 0x68, 0x61, 0x6e,
		0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4c, 0x3d, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c,
		0x20, 0x4f, 0x3d, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69, 0x2c, 0x20, 0x43, 0x4e, 0x3d, 0x6b, 0x74, 0x61,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20,
		0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69,
		0x63, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20,
		0x72, 0x73, 0x61, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x53, 0x41, 0x20,
		0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x4b, 0x65, 0x79, 0x3a, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38,
		0x20, 0x62, 0x69, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x30, 0x30, 0x3a, 0x64, 0x30, 0x3a, 0x35, 0x38, 0x3a, 0x61, 0x39, 0x3a, 0x31, 0x33, 0x3a, 0x33, 0x62,
		0x3a, 0x32, 0x32, 0x3a, 0x61, 0x64, 0x3a, 0x30, 0x36, 0x3a, 0x39, 0x35, 0x3a, 0x37, 0x37, 0x3a, 0x33,
		0x33, 0x3a, 0x62, 0x66, 0x3a, 0x62, 0x61, 0x3a, 0x39, 0x30, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x39, 0x64,
		0x3a, 0x35, 0x32, 0x3a, 0x39, 0x61, 0x3a, 0x61, 0x31, 0x3a, 0x34, 0x36, 0x3a, 0x35, 0x35, 0x3a, 0x32,
		0x31, 0x3a, 0x30, 0x61, 0x3a, 0x32, 0x64, 0x3a, 0x64, 0x38, 0x3a, 0x38, 0x62, 0x3a, 0x30, 0x32, 0x3a,
		0x66, 0x33, 0x3a, 0x33, 0x63, 0x3a, 0x34, 0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x35, 0x3a, 0x33,
		0x61, 0x3a, 0x33, 0x66, 0x3a, 0x30, 0x36, 0x3a, 0x38, 0x66, 0x3a, 0x62, 0x65, 0x3a, 0x37, 0x39, 0x3a,
		0x31, 0x38, 0x3a, 0x35, 0x33, 0x3a, 0x37, 0x38, 0x3a, 0x32, 0x65, 0x3a, 0x62, 0x37, 0x3a, 0x66, 0x66,
		0x3a, 0x36, 0x32, 0x3a, 0x30, 0x63, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x65, 0x3a, 0x65, 0x63, 0x3a,
		0x62, 0x32, 0x3a, 0x30, 0x63, 0x3a, 0x33, 0x61, 0x3a, 0x66, 0x30, 0x3a, 0x61, 0x30, 0x3a, 0x34, 0x34,
		0x3a, 0x61, 0x30, 0x3a, 0x62, 0x31, 0x3a, 0x65, 0x35, 0x3a, 0x31, 0x30, 0x3a, 0x66, 0x64, 0x3a, 0x37,
		0x36, 0x3a, 0x30, 0x31, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x37, 0x38, 0x3a, 0x39, 0x39, 0x3a, 0x65, 0x35,
		0x3a, 0x62, 0x61, 0x3a, 0x66, 0x66, 0x3a, 0x63, 0x34, 0x3a, 0x39, 0x33, 0x3a, 0x61, 0x61, 0x3a, 0x38,
		0x30, 0x3a, 0x35, 0x32, 0x3a, 0x39, 0x62, 0x3a, 0x36, 0x36, 0x3a, 0x31, 0x62, 0x3a, 0x65, 0x35, 0x3a,
		0x31, 0x33, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x64, 0x3a, 0x35, 0x61, 0x3a, 0x66, 0x64, 0x3a, 0x35,
		0x66, 0x3a, 0x61, 0x30, 0x3a, 0x38, 0x37, 0x3a, 0x38, 0x38, 0x3a, 0x66, 0x66, 0x3a, 0x39, 0x64, 0x3a,
		0x30, 0x35, 0x3a, 0x32, 0x39, 0x3a, 0x33, 0x39, 0x3a, 0x34, 0x64, 0x3a, 0x31, 0x37, 0x3a, 0x32, 0x64,
		0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x36, 0x38, 0x3a, 0x36, 0x31, 0x3a, 0x39, 0x64, 0x3a, 0x32, 0x65, 0x3a,
		0x39, 0x33, 0x3a, 0x38, 0x64, 0x3a, 0x31, 0x35, 0x3a, 0x34, 0x30, 0x3a, 0x61, 0x62, 0x3a, 0x66, 0x35,
		0x3a, 0x33, 0x35, 0x3a, 0x61, 0x33, 0x3a, 0x38, 0x36, 0x3a, 0x32, 0x64, 0x3a, 0x62, 0x31, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x65, 0x31, 0x3a, 0x64, 0x37, 0x3a, 0x61, 0x64, 0x3a, 0x65, 0x33, 0x3a, 0x33, 0x30,
		0x3a, 0x63, 0x31, 0x3a, 0x36, 0x33, 0x3a, 0x38, 0x66, 0x3a, 0x33, 0x36, 0x3a, 0x33, 0x37, 0x3a, 0x30,
		0x36, 0x3a, 0x66, 0x63, 0x3a, 0x30, 0x36, 0x3a, 0x36, 0x38, 0x3a, 0x31, 0x66, 0x3a, 0x0a, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x63, 0x31, 0x3a, 0x65, 0x62, 0x3a, 0x31, 0x38, 0x3a, 0x37, 0x37, 0x3a, 0x61, 0x37, 0x3a, 0x39,
		0x32, 0x3a, 0x62, 0x61, 0x3a, 0x32, 0x62, 0x3a, 0x37, 0x32, 0x3a, 0x32, 0x65, 0x3a, 0x66, 0x30, 0x3a,
		0x31, 0x35, 0x3a, 0x31, 0x32, 0x3a, 0x38, 0x33, 0x3a, 0x32, 0x32, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x37,
		0x33, 0x3a, 0x63, 0x66, 0x3a, 0x63, 0x37, 0x3a, 0x64, 0x34, 0x3a, 0x39, 0x39, 0x3a, 0x34, 0x32, 0x3a,
		0x30, 0x30, 0x3a, 0x61, 0x38, 0x3a, 0x32, 0x39, 0x3a, 0x31, 0x63, 0x3a, 0x32, 0x38, 0x3a, 0x64, 0x35,
		0x3a, 0x63, 0x30, 0x3a, 0x63, 0x61, 0x3a, 0x35, 0x32, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x30, 0x3a,
		0x62, 0x62, 0x3a, 0x64, 0x38, 0x3a, 0x30, 0x35, 0x3a, 0x66, 0x31, 0x3a, 0x61, 0x65, 0x3a, 0x62, 0x32,
		0x3a, 0x35, 0x32, 0x3a, 0x30, 0x33, 0x3a, 0x39, 0x36, 0x3a, 0x38, 0x63, 0x3a, 0x66, 0x35, 0x3a, 0x37,
		0x37, 0x3a, 0x63, 0x30, 0x3a, 0x62, 0x34, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x39, 0x3a, 0x62, 0x36,
		0x3a, 0x34, 0x31, 0x3a, 0x63, 0x37, 0x3a, 0x34, 0x32, 0x3a, 0x62, 0x39, 0x3a, 0x32, 0x64, 0x3a, 0x63,
		0x66, 0x3a, 0x62, 0x66, 0x3a, 0x65, 0x39, 0x3a, 0x36, 0x31, 0x3a, 0x31, 0x31, 0x3a, 0x66, 0x39, 0x3a,
		0x35, 0x30, 0x3a, 0x64, 0x66, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x66, 0x3a, 0x39, 0x36, 0x3a, 0x63,
		0x61, 0x3a, 0x38, 0x63, 0x3a, 0x36, 0x31, 0x3a, 0x66, 0x31, 0x3a, 0x31, 0x30, 0x3a, 0x30, 0x66, 0x3a,
		0x36, 0x62, 0x3a, 0x33, 0x62, 0x3a, 0x33, 0x33, 0x3a, 0x66, 0x61, 0x3a, 0x64, 0x32, 0x3a, 0x32, 0x65,
		0x3a, 0x34, 0x31, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x31, 0x3a, 0x30, 0x30, 0x3a, 0x35, 0x61, 0x3a,
		0x31, 0x61, 0x3a, 0x64, 0x32, 0x3a, 0x65, 0x35, 0x3a, 0x61, 0x39, 0x3a, 0x65, 0x36, 0x3a, 0x33, 0x65,
		0x3a, 0x61, 0x37, 0x3a, 0x30, 0x33, 0x3a, 0x34, 0x63, 0x3a, 0x39, 0x62, 0x3a, 0x34, 0x37, 0x3a, 0x30,
		0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x32, 0x3a, 0x33, 0x65, 0x3a, 0x37, 0x34, 0x3a, 0x30, 0x39,
		0x3a, 0x35, 0x63, 0x3a, 0x64, 0x30, 0x3a, 0x32, 0x35, 0x3a, 0x35, 0x33, 0x3a, 0x35, 0x65, 0x3a, 0x37,
		0x31, 0x3a, 0x34, 0x39, 0x3a, 0x65, 0x62, 0x3a, 0x39, 0x31, 0x3a, 0x34, 0x66, 0x3a, 0x30, 0x30, 0x3a,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x36, 0x33, 0x3a, 0x64, 0x33, 0x3a, 0x66, 0x64, 0x3a, 0x62, 0x62, 0x3a, 0x38,
		0x65, 0x3a, 0x35, 0x30, 0x3a, 0x39, 0x61, 0x3a, 0x33, 0x37, 0x3a, 0x62, 0x33, 0x3a, 0x30, 0x32, 0x3a,
		0x66, 0x66, 0x3a, 0x36, 0x36, 0x3a, 0x37, 0x35, 0x3a, 0x36, 0x62, 0x3a, 0x37, 0x32, 0x3a, 0x0a, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x39, 0x65, 0x3a, 0x31, 0x31, 0x3a, 0x66, 0x64, 0x3a, 0x35, 0x62, 0x3a, 0x39, 0x64, 0x3a,
		0x61, 0x64, 0x3a, 0x30, 0x61, 0x3a, 0x30, 0x31, 0x3a, 0x37, 0x32, 0x3a, 0x36, 0x61, 0x3a, 0x65, 0x63,
		0x3a, 0x38, 0x63, 0x3a, 0x32, 0x35, 0x3a, 0x34, 0x31, 0x3a, 0x30, 0x37, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x64, 0x30, 0x3a, 0x62, 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x36, 0x35,
		0x35, 0x33, 0x37, 0x20, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e,
		0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x43, 0x6f,
		0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x3a, 0x46, 0x41, 0x4c,
		0x53, 0x45, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x65,
		0x74, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f,
		0x70, 0x65, 0x6e, 0x53, 0x53, 0x4c, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20,
		0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x53, 0x75, 0x62,
		0x6a, 0x65, 0x63, 0x74, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
		0x65, 0x72, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x42, 0x36, 0x3a, 0x41, 0x30, 0x3a, 0x34, 0x38, 0x3a, 0x34, 0x46, 0x3a, 0x33,
		0x42, 0x3a, 0x43, 0x33, 0x3a, 0x42, 0x46, 0x3a, 0x45, 0x31, 0x3a, 0x31, 0x38, 0x3a, 0x37, 0x42, 0x3a,
		0x46, 0x30, 0x3a, 0x33, 0x36, 0x3a, 0x39, 0x42, 0x3a, 0x30, 0x37, 0x3a, 0x37, 0x31, 0x3a, 0x38, 0x31,
		0x3a, 0x44, 0x30, 0x3a, 0x36, 0x46, 0x3a, 0x43, 0x44, 0x3a, 0x44, 0x33, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x41, 0x75,
		0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x64, 0x65, 0x6e, 0x74,
		0x69, 0x66, 0x69, 0x65, 0x72, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x65, 0x79, 0x69, 0x64, 0x3a, 0x44, 0x33, 0x3a, 0x35,
		0x34, 0x3a, 0x38, 0x41, 0x3a, 0x34, 0x42, 0x3a, 0x43, 0x32, 0x3a, 0x36, 0x34, 0x3a, 0x39, 0x34, 0x3a,
		0x42, 0x46, 0x3a, 0x39, 0x45, 0x3a, 0x46, 0x39, 0x3a, 0x34, 0x41, 0x3a, 0x38, 0x38, 0x3a, 0x43, 0x37,
		0x3a, 0x45, 0x39, 0x3a, 0x45, 0x32, 0x3a, 0x31, 0x30, 0x3a, 0x31, 0x30, 0x3a, 0x30, 0x37, 0x3a, 0x43,
		0x45, 0x3a, 0x39, 0x46, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
		0x72, 0x65, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20, 0x73, 0x68, 0x61,
		0x32, 0x35, 0x36, 0x57, 0x69, 0x74, 0x68, 0x52, 0x53, 0x41, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
		0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x63, 0x3a, 0x65,
		0x38, 0x3a, 0x38, 0x36, 0x3a, 0x32, 0x34, 0x3a, 0x66, 0x38, 0x3a, 0x35, 0x33, 0x3a, 0x36, 0x35, 0x3a,
		0x63, 0x61, 0x3a, 0x38, 0x61, 0x3a, 0x38, 0x35, 0x3a, 0x61, 0x36, 0x3a, 0x32, 0x62, 0x3a, 0x31, 0x39,
		0x3a, 0x39, 0x64, 0x3a, 0x64, 0x31, 0x3a, 0x62, 0x34, 0x3a, 0x62, 0x63, 0x3a, 0x62, 0x32, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x37, 0x3a, 0x30, 0x32, 0x3a, 0x33, 0x37,
		0x3a, 0x34, 0x37, 0x3a, 0x39, 0x61, 0x3a, 0x30, 0x35, 0x3a, 0x36, 0x32, 0x3a, 0x38, 0x31, 0x3a, 0x32,
		0x63, 0x3a, 0x63, 0x31, 0x3a, 0x66, 0x61, 0x3a, 0x38, 0x62, 0x3a, 0x30, 0x38, 0x3a, 0x30, 0x31, 0x3a,
		0x39, 0x35, 0x3a, 0x38, 0x38, 0x3a, 0x33, 0x31, 0x3a, 0x39, 0x63, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x35, 0x3a, 0x63, 0x65, 0x3a, 0x35, 0x32, 0x3a, 0x32, 0x37, 0x3a,
		0x66, 0x34, 0x3a, 0x34, 0x66, 0x3a, 0x61, 0x37, 0x3a, 0x32, 0x61, 0x3a, 0x39, 0x39, 0x3a, 0x63, 0x30,
		0x3a, 0x39, 0x65, 0x3a, 0x61, 0x62, 0x3a, 0x36, 0x32, 0x3a, 0x62, 0x33, 0x3a, 0x61, 0x38, 0x3a, 0x63,
		0x62, 0x3a, 0x34, 0x31, 0x3a, 0x34, 0x64, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x39, 0x64, 0x3a, 0x30, 0x33, 0x3a, 0x38, 0x33, 0x3a, 0x64, 0x63, 0x3a, 0x38, 0x39, 0x3a, 0x38,
		0x64, 0x3a, 0x35, 0x36, 0x3a, 0x36, 0x65, 0x3a, 0x39, 0x63, 0x3a, 0x63, 0x30, 0x3a, 0x35, 0x37, 0x3a,
		0x33, 0x39, 0x3a, 0x35, 0x31, 0x3a, 0x63, 0x36, 0x3a, 0x66, 0x37, 0x3a, 0x34, 0x63, 0x3a, 0x34, 0x36,
		0x3a, 0x33, 0x30, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x64, 0x3a,
		0x31, 0x65, 0x3a, 0x37, 0x38, 0x3a, 0x30, 0x61, 0x3a, 0x39, 0x66, 0x3a, 0x64, 0x33, 0x3a, 0x64, 0x35,
		0x3a, 0x32, 0x65, 0x3a, 0x37, 0x64, 0x3a, 0x66, 0x34, 0x3a, 0x35, 0x65, 0x3a, 0x36, 0x32, 0x3a, 0x38,
		0x30, 0x3a, 0x32, 0x38, 0x3a, 0x66, 0x32, 0x3a, 0x39, 0x65, 0x3a, 0x34, 0x34, 0x3a, 0x62, 0x34, 0x3a,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x63, 0x3a, 0x63, 0x61, 0x3a, 0x33,
		0x62, 0x3a, 0x33, 0x33, 0x3a, 0x65, 0x34, 0x3a, 0x38, 0x37, 0x3a, 0x61, 0x37, 0x3a, 0x36, 0x30, 0x3a,
		0x34, 0x32, 0x3a, 0x37, 0x34, 0x3a, 0x65, 0x36, 0x3a, 0x37, 0x35, 0x3a, 0x39, 0x66, 0x3a, 0x62, 0x66,
		0x3a, 0x34, 0x31, 0x3a, 0x36, 0x66, 0x3a, 0x66, 0x36, 0x3a, 0x33, 0x61, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x34, 0x3a, 0x65, 0x33, 0x3a, 0x34, 0x39, 0x3a, 0x61, 0x61,
		0x3a, 0x36, 0x35, 0x3a, 0x62, 0x39, 0x3a, 0x33, 0x61, 0x3a, 0x61, 0x31, 0x3a, 0x36, 0x38, 0x3a, 0x32,
		0x62, 0x3a, 0x63, 0x37, 0x3a, 0x33, 0x39, 0x3a, 0x38, 0x34, 0x3a, 0x64, 0x62, 0x3a, 0x63, 0x36, 0x3a,
		0x35, 0x36, 0x3a, 0x61, 0x31, 0x3a, 0x31, 0x34, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x64, 0x37, 0x3a, 0x65, 0x65, 0x3a, 0x38, 0x36, 0x3a, 0x34, 0x66, 0x3a, 0x38, 0x65, 0x3a,
		0x37, 0x39, 0x3a, 0x36, 0x39, 0x3a, 0x61, 0x34, 0x3a, 0x66, 0x32, 0x3a, 0x65, 0x61, 0x3a, 0x64, 0x36,
		0x3a, 0x63, 0x61, 0x3a, 0x66, 0x37, 0x3a, 0x66, 0x66, 0x3a, 0x66, 0x35, 0x3a, 0x32, 0x30, 0x3a, 0x63,
		0x63, 0x3a, 0x34, 0x61, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x39,
		0x3a, 0x34, 0x37, 0x3a, 0x64, 0x66, 0x3a, 0x31, 0x61, 0x3a, 0x62, 0x39, 0x3a, 0x37, 0x36, 0x3a, 0x35,
		0x65, 0x3a, 0x31, 0x62, 0x3a, 0x35, 0x61, 0x3a, 0x30, 0x66, 0x3a, 0x32, 0x61, 0x3a, 0x37, 0x35, 0x3a,
		0x37, 0x64, 0x3a, 0x38, 0x66, 0x3a, 0x37, 0x32, 0x3a, 0x32, 0x63, 0x3a, 0x30, 0x61, 0x3a, 0x63, 0x62,
		0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x62, 0x3a, 0x66, 0x37, 0x3a,
		0x66, 0x36, 0x3a, 0x61, 0x63, 0x3a, 0x33, 0x39, 0x3a, 0x33, 0x32, 0x3a, 0x66, 0x62, 0x3a, 0x63, 0x32,
		0x3a, 0x33, 0x33, 0x3a, 0x65, 0x66, 0x3a, 0x33, 0x37, 0x3a, 0x32, 0x35, 0x3a, 0x37, 0x65, 0x3a, 0x37,
		0x30, 0x3a, 0x34, 0x39, 0x3a, 0x64, 0x33, 0x3a, 0x63, 0x61, 0x3a, 0x38, 0x38, 0x3a, 0x0a, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x39, 0x65, 0x3a, 0x35, 0x39, 0x3a, 0x33, 0x31, 0x3a, 0x36,
		0x36, 0x3a, 0x66, 0x37, 0x3a, 0x64, 0x31, 0x3a, 0x32, 0x38, 0x3a, 0x38, 0x37, 0x3a, 0x31, 0x30, 0x3a,
		0x35, 0x34, 0x3a, 0x37, 0x31, 0x3a, 0x35, 0x64, 0x3a, 0x65, 0x62, 0x3a, 0x36, 0x63, 0x3a, 0x66, 0x33,
		0x3a, 0x35, 0x37, 0x3a, 0x37, 0x37, 0x3a, 0x35, 0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x65, 0x35, 0x3a, 0x62, 0x61, 0x3a, 0x30, 0x61, 0x3a, 0x66, 0x36, 0x3a, 0x38, 0x36,
		0x3a, 0x31, 0x62, 0x3a, 0x35, 0x35, 0x3a, 0x37, 0x63, 0x3a, 0x35, 0x64, 0x3a, 0x36, 0x61, 0x3a, 0x63,
		0x33, 0x3a, 0x61, 0x32, 0x3a, 0x65, 0x37, 0x3a, 0x65, 0x31, 0x3a, 0x62, 0x38, 0x3a, 0x33, 0x39, 0x3a,
		0x66, 0x62, 0x3a, 0x34, 0x31, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x36,
		0x34, 0x3a, 0x33, 0x35, 0x3a, 0x61, 0x31, 0x3a, 0x34, 0x31, 0x3a, 0x30, 0x33, 0x3a, 0x64, 0x38, 0x3a,
		0x38, 0x37, 0x3a, 0x66, 0x39, 0x3a, 0x65, 0x62, 0x3a, 0x64, 0x34, 0x3a, 0x64, 0x36, 0x3a, 0x36, 0x65,
		0x3a, 0x65, 0x39, 0x3a, 0x37, 0x34, 0x3a, 0x36, 0x64, 0x3a, 0x30, 0x62, 0x3a, 0x66, 0x64, 0x3a, 0x37,
		0x31, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x37, 0x36, 0x3a, 0x30, 0x37,
		0x3a, 0x33, 0x34, 0x3a, 0x39, 0x66, 0x3a, 0x39, 0x37, 0x3a, 0x66, 0x62, 0x3a, 0x39, 0x61, 0x3a, 0x39,
		0x65, 0x3a, 0x39, 0x62, 0x3a, 0x62, 0x32, 0x3a, 0x39, 0x38, 0x3a, 0x39, 0x65, 0x3a, 0x37, 0x35, 0x3a,
		0x61, 0x65, 0x3a, 0x32, 0x63, 0x3a, 0x36, 0x63, 0x3a, 0x64, 0x61, 0x3a, 0x33, 0x39, 0x3a, 0x0a, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x64, 0x3a, 0x37, 0x39, 0x3a, 0x38, 0x39, 0x3a,
		0x35, 0x37, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52,
		0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49,
		0x44, 0x6d, 0x54, 0x43, 0x43, 0x41, 0x6f, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42,
		0x41, 0x54, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41,
		0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51,
		0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31,
		0x55, 0x45, 0x43, 0x41, 0x77, 0x49, 0x55, 0x32, 0x68, 0x68, 0x62, 0x6d, 0x64, 0x6f, 0x59, 0x57, 0x6b,
		0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x43, 0x46, 0x4e, 0x6f,
		0x59, 0x57, 0x35, 0x6e, 0x61, 0x47, 0x46, 0x70, 0x4d, 0x51, 0x38, 0x77, 0x44, 0x51, 0x59, 0x44, 0x56,
		0x51, 0x51, 0x4b, 0x44, 0x41, 0x5a, 0x49, 0x0a, 0x64, 0x57, 0x46, 0x33, 0x5a, 0x57, 0x6b, 0x78, 0x43,
		0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x41, 0x6d, 0x4e, 0x68, 0x4d, 0x42,
		0x34, 0x58, 0x44, 0x54, 0x49, 0x79, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x54, 0x41, 0x7a, 0x4e, 0x44, 0x55,
		0x30, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x78, 0x4e, 0x6a, 0x41, 0x7a,
		0x4e, 0x44, 0x55, 0x30, 0x0a, 0x4f, 0x46, 0x6f, 0x77, 0x55, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47,
		0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42,
		0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x46, 0x4e, 0x6f, 0x59, 0x57, 0x35, 0x6e, 0x61, 0x47,
		0x46, 0x70, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x68,
		0x54, 0x0a, 0x61, 0x47, 0x46, 0x75, 0x5a, 0x32, 0x68, 0x68, 0x61, 0x54, 0x45, 0x50, 0x4d, 0x41, 0x30,
		0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x47, 0x53, 0x48, 0x56, 0x68, 0x64, 0x32, 0x56, 0x70,
		0x4d, 0x51, 0x77, 0x77, 0x43, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41, 0x4e, 0x72, 0x64,
		0x47, 0x45, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x0a, 0x53,
		0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77,
		0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x44, 0x51, 0x57, 0x4b, 0x6b,
		0x54, 0x4f, 0x79, 0x4b, 0x74, 0x42, 0x70, 0x56, 0x33, 0x4d, 0x37, 0x2b, 0x36, 0x6b, 0x4a, 0x31, 0x53,
		0x6d, 0x71, 0x46, 0x47, 0x56, 0x53, 0x45, 0x4b, 0x4c, 0x64, 0x69, 0x4c, 0x0a, 0x41, 0x76, 0x4d, 0x38,
		0x52, 0x55, 0x55, 0x36, 0x50, 0x77, 0x61, 0x50, 0x76, 0x6e, 0x6b, 0x59, 0x55, 0x33, 0x67, 0x75, 0x74,
		0x2f, 0x39, 0x69, 0x44, 0x45, 0x37, 0x73, 0x73, 0x67, 0x77, 0x36, 0x38, 0x4b, 0x42, 0x45, 0x6f, 0x4c,
		0x48, 0x6c, 0x45, 0x50, 0x31, 0x32, 0x41, 0x58, 0x69, 0x5a, 0x35, 0x62, 0x72, 0x2f, 0x78, 0x4a, 0x4f,
		0x71, 0x67, 0x46, 0x4b, 0x62, 0x5a, 0x68, 0x76, 0x6c, 0x0a, 0x45, 0x2f, 0x31, 0x61, 0x2f, 0x56, 0x2b,
		0x67, 0x68, 0x34, 0x6a, 0x2f, 0x6e, 0x51, 0x55, 0x70, 0x4f, 0x55, 0x30, 0x58, 0x4c, 0x57, 0x68, 0x68,
		0x6e, 0x53, 0x36, 0x54, 0x6a, 0x52, 0x56, 0x41, 0x71, 0x2f, 0x55, 0x31, 0x6f, 0x34, 0x59, 0x74, 0x73,
		0x65, 0x48, 0x58, 0x72, 0x65, 0x4d, 0x77, 0x77, 0x57, 0x4f, 0x50, 0x4e, 0x6a, 0x63, 0x47, 0x2f, 0x41,
		0x5a, 0x6f, 0x48, 0x38, 0x48, 0x72, 0x0a, 0x47, 0x48, 0x65, 0x6e, 0x6b, 0x72, 0x6f, 0x72, 0x63, 0x69,
		0x37, 0x77, 0x46, 0x52, 0x4b, 0x44, 0x49, 0x6e, 0x50, 0x50, 0x78, 0x39, 0x53, 0x5a, 0x51, 0x67, 0x43,
		0x6f, 0x4b, 0x52, 0x77, 0x6f, 0x31, 0x63, 0x44, 0x4b, 0x55, 0x6b, 0x43, 0x37, 0x32, 0x41, 0x58, 0x78,
		0x72, 0x72, 0x4a, 0x53, 0x41, 0x35, 0x61, 0x4d, 0x39, 0x58, 0x66, 0x41, 0x74, 0x49, 0x6d, 0x32, 0x51,
		0x63, 0x64, 0x43, 0x0a, 0x75, 0x53, 0x33, 0x50, 0x76, 0x2b, 0x6c, 0x68, 0x45, 0x66, 0x6c, 0x51, 0x33,
		0x37, 0x2b, 0x57, 0x79, 0x6f, 0x78, 0x68, 0x38, 0x52, 0x41, 0x50, 0x61, 0x7a, 0x73, 0x7a, 0x2b, 0x74,
		0x49, 0x75, 0x51, 0x63, 0x45, 0x41, 0x57, 0x68, 0x72, 0x53, 0x35, 0x61, 0x6e, 0x6d, 0x50, 0x71, 0x63,
		0x44, 0x54, 0x4a, 0x74, 0x48, 0x42, 0x52, 0x49, 0x2b, 0x64, 0x41, 0x6c, 0x63, 0x30, 0x43, 0x56, 0x54,
		0x0a, 0x58, 0x6e, 0x46, 0x4a, 0x36, 0x35, 0x46, 0x50, 0x41, 0x47, 0x50, 0x54, 0x2f, 0x62, 0x75, 0x4f,
		0x55, 0x4a, 0x6f, 0x33, 0x73, 0x77, 0x4c, 0x2f, 0x5a, 0x6e, 0x56, 0x72, 0x63, 0x70, 0x34, 0x52, 0x2f,
		0x56, 0x75, 0x64, 0x72, 0x51, 0x6f, 0x42, 0x63, 0x6d, 0x72, 0x73, 0x6a, 0x43, 0x56, 0x42, 0x42, 0x39,
		0x43, 0x2f, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x65, 0x7a, 0x42, 0x35, 0x0a, 0x4d, 0x41,
		0x6b, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x51, 0x43, 0x4d, 0x41, 0x41, 0x77, 0x4c, 0x41, 0x59,
		0x4a, 0x59, 0x49, 0x5a, 0x49, 0x41, 0x59, 0x62, 0x34, 0x51, 0x67, 0x45, 0x4e, 0x42, 0x42, 0x38, 0x57,
		0x48, 0x55, 0x39, 0x77, 0x5a, 0x57, 0x35, 0x54, 0x55, 0x30, 0x77, 0x67, 0x52, 0x32, 0x56, 0x75, 0x5a,
		0x58, 0x4a, 0x68, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x45, 0x4e, 0x6c, 0x0a, 0x63, 0x6e, 0x52, 0x70, 0x5a,
		0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67,
		0x51, 0x57, 0x42, 0x42, 0x53, 0x32, 0x6f, 0x45, 0x68, 0x50, 0x4f, 0x38, 0x4f, 0x2f, 0x34, 0x52, 0x68,
		0x37, 0x38, 0x44, 0x61, 0x62, 0x42, 0x33, 0x47, 0x42, 0x30, 0x47, 0x2f, 0x4e, 0x30, 0x7a, 0x41, 0x66,
		0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x0a, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x54,
		0x56, 0x49, 0x70, 0x4c, 0x77, 0x6d, 0x53, 0x55, 0x76, 0x35, 0x37, 0x35, 0x53, 0x6f, 0x6a, 0x48, 0x36,
		0x65, 0x49, 0x51, 0x45, 0x41, 0x66, 0x4f, 0x6e, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b,
		0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45,
		0x41, 0x44, 0x4f, 0x69, 0x47, 0x0a, 0x4a, 0x50, 0x68, 0x54, 0x5a, 0x63, 0x71, 0x4b, 0x68, 0x61, 0x59,
		0x72, 0x47, 0x5a, 0x33, 0x52, 0x74, 0x4c, 0x79, 0x79, 0x35, 0x77, 0x49, 0x33, 0x52, 0x35, 0x6f, 0x46,
		0x59, 0x6f, 0x45, 0x73, 0x77, 0x66, 0x71, 0x4c, 0x43, 0x41, 0x47, 0x56, 0x69, 0x44, 0x47, 0x63, 0x42,
		0x63, 0x35, 0x53, 0x4a, 0x2f, 0x52, 0x50, 0x70, 0x79, 0x71, 0x5a, 0x77, 0x4a, 0x36, 0x72, 0x59, 0x72,
		0x4f, 0x6f, 0x0a, 0x79, 0x30, 0x46, 0x4e, 0x6e, 0x51, 0x4f, 0x44, 0x33, 0x49, 0x6d, 0x4e, 0x56, 0x6d,
		0x36, 0x63, 0x77, 0x46, 0x63, 0x35, 0x55, 0x63, 0x62, 0x33, 0x54, 0x45, 0x59, 0x77, 0x7a, 0x52, 0x35,
		0x34, 0x43, 0x70, 0x2f, 0x54, 0x31, 0x53, 0x35, 0x39, 0x39, 0x46, 0x35, 0x69, 0x67, 0x43, 0x6a, 0x79,
		0x6e, 0x6b, 0x53, 0x30, 0x76, 0x4d, 0x6f, 0x37, 0x4d, 0x2b, 0x53, 0x48, 0x70, 0x32, 0x42, 0x43, 0x0a,
		0x64, 0x4f, 0x5a, 0x31, 0x6e, 0x37, 0x39, 0x42, 0x62, 0x2f, 0x59, 0x36, 0x74, 0x4f, 0x4e, 0x4a, 0x71,
		0x6d, 0x57, 0x35, 0x4f, 0x71, 0x46, 0x6f, 0x4b, 0x38, 0x63, 0x35, 0x68, 0x4e, 0x76, 0x47, 0x56, 0x71,
		0x45, 0x55, 0x31, 0x2b, 0x36, 0x47, 0x54, 0x34, 0x35, 0x35, 0x61, 0x61, 0x54, 0x79, 0x36, 0x74, 0x62,
		0x4b, 0x39, 0x2f, 0x2f, 0x31, 0x49, 0x4d, 0x78, 0x4b, 0x4f, 0x55, 0x66, 0x66, 0x0a, 0x47, 0x72, 0x6c,
		0x32, 0x58, 0x68, 0x74, 0x61, 0x44, 0x79, 0x70, 0x31, 0x66, 0x59, 0x39, 0x79, 0x4c, 0x41, 0x72, 0x4c,
		0x43, 0x2f, 0x66, 0x32, 0x72, 0x44, 0x6b, 0x79, 0x2b, 0x38, 0x49, 0x7a, 0x37, 0x7a, 0x63, 0x6c, 0x66,
		0x6e, 0x42, 0x4a, 0x30, 0x38, 0x71, 0x49, 0x6e, 0x6c, 0x6b, 0x78, 0x5a, 0x76, 0x66, 0x52, 0x4b, 0x49,
		0x63, 0x51, 0x56, 0x48, 0x46, 0x64, 0x36, 0x32, 0x7a, 0x7a, 0x0a, 0x56, 0x33, 0x64, 0x56, 0x35, 0x62,
		0x6f, 0x4b, 0x39, 0x6f, 0x59, 0x62, 0x56, 0x58, 0x78, 0x64, 0x61, 0x73, 0x4f, 0x69, 0x35, 0x2b, 0x47,
		0x34, 0x4f, 0x66, 0x74, 0x42, 0x5a, 0x44, 0x57, 0x68, 0x51, 0x51, 0x50, 0x59, 0x68, 0x2f, 0x6e, 0x72,
		0x31, 0x4e, 0x5a, 0x75, 0x36, 0x58, 0x52, 0x74, 0x43, 0x2f, 0x31, 0x78, 0x64, 0x67, 0x63, 0x30, 0x6e,
		0x35, 0x66, 0x37, 0x6d, 0x70, 0x36, 0x62, 0x0a, 0x73, 0x70, 0x69, 0x65, 0x64, 0x61, 0x34, 0x73, 0x62,
		0x4e, 0x6f, 0x35, 0x6a, 0x58, 0x6d, 0x4a, 0x56, 0x77, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
		0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
		0x2d, 0x2d, 0x2d, 0x0a,
	}
	kcmcert = []byte{
		0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x44, 0x61, 0x74, 0x61, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x56, 0x65, 0x72,
		0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x33, 0x20, 0x28, 0x30, 0x78, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x4e, 0x75, 0x6d, 0x62, 0x65,
		0x72, 0x3a, 0x20, 0x32, 0x20, 0x28, 0x30, 0x78, 0x32, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72,
		0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x57, 0x69, 0x74, 0x68, 0x52,
		0x53, 0x41, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x3d, 0x43, 0x4e, 0x2c,
		0x20, 0x53, 0x54, 0x3d, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4c, 0x3d, 0x53,
		0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4f, 0x3d, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69,
		0x2c, 0x20, 0x43, 0x4e, 0x3d, 0x63, 0x61, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x56,
		0x61, 0x6c, 0x69, 0x64, 0x69, 0x74, 0x79, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x3a, 0x20, 0x4e, 0x6f,
		0x76, 0x20, 0x32, 0x35, 0x20, 0x30, 0x33, 0x3a, 0x34, 0x35, 0x3a, 0x35, 0x38, 0x20, 0x32, 0x30, 0x32,
		0x32, 0x20, 0x47, 0x4d, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x4e, 0x6f, 0x74, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x3a, 0x20, 0x4e, 0x6f, 0x76, 0x20,
		0x31, 0x36, 0x20, 0x30, 0x33, 0x3a, 0x34, 0x35, 0x3a, 0x35, 0x38, 0x20, 0x32, 0x30, 0x32, 0x33, 0x20,
		0x47, 0x4d, 0x54, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x75, 0x62, 0x6a, 0x65,
		0x63, 0x74, 0x3a, 0x20, 0x43, 0x3d, 0x43, 0x4e, 0x2c, 0x20, 0x53, 0x54, 0x3d, 0x53, 0x68, 0x61, 0x6e,
		0x67, 0x68, 0x61, 0x69, 0x2c, 0x20, 0x4c, 0x3d, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x2c,
		0x20, 0x4f, 0x3d, 0x48, 0x75, 0x61, 0x77, 0x65, 0x69, 0x2c, 0x20, 0x43, 0x4e, 0x3d, 0x6b, 0x63, 0x6d,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20,
		0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x6e, 0x66, 0x6f, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69,
		0x63, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20,
		0x72, 0x73, 0x61, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x52, 0x53, 0x41, 0x20,
		0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x4b, 0x65, 0x79, 0x3a, 0x20, 0x28, 0x32, 0x30, 0x34, 0x38,
		0x20, 0x62, 0x69, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x75, 0x73, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x30, 0x30, 0x3a, 0x61, 0x61, 0x3a, 0x35, 0x34, 0x3a, 0x32, 0x39, 0x3a, 0x65, 0x33, 0x3a, 0x63, 0x61,
		0x3a, 0x38, 0x64, 0x3a, 0x62, 0x32, 0x3a, 0x63, 0x61, 0x3a, 0x32, 0x63, 0x3a, 0x65, 0x32, 0x3a, 0x39,
		0x35, 0x3a, 0x37, 0x38, 0x3a, 0x31, 0x66, 0x3a, 0x64, 0x62, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x33,
		0x3a, 0x39, 0x66, 0x3a, 0x30, 0x31, 0x3a, 0x31, 0x36, 0x3a, 0x63, 0x32, 0x3a, 0x61, 0x34, 0x3a, 0x35,
		0x32, 0x3a, 0x62, 0x32, 0x3a, 0x32, 0x62, 0x3a, 0x36, 0x37, 0x3a, 0x39, 0x64, 0x3a, 0x62, 0x37, 0x3a,
		0x33, 0x62, 0x3a, 0x34, 0x63, 0x3a, 0x35, 0x39, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x39, 0x3a, 0x39,
		0x32, 0x3a, 0x36, 0x32, 0x3a, 0x62, 0x35, 0x3a, 0x32, 0x30, 0x3a, 0x38, 0x64, 0x3a, 0x63, 0x32, 0x3a,
		0x65, 0x64, 0x3a, 0x66, 0x62, 0x3a, 0x39, 0x33, 0x3a, 0x32, 0x64, 0x3a, 0x33, 0x64, 0x3a, 0x31, 0x31,
		0x3a, 0x65, 0x30, 0x3a, 0x63, 0x62, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x38, 0x3a, 0x36, 0x65, 0x3a,
		0x63, 0x61, 0x3a, 0x30, 0x31, 0x3a, 0x37, 0x38, 0x3a, 0x32, 0x39, 0x3a, 0x32, 0x32, 0x3a, 0x31, 0x35,
		0x3a, 0x39, 0x64, 0x3a, 0x33, 0x33, 0x3a, 0x39, 0x37, 0x3a, 0x37, 0x32, 0x3a, 0x31, 0x64, 0x3a, 0x31,
		0x34, 0x3a, 0x32, 0x38, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x39, 0x66, 0x3a, 0x63, 0x66, 0x3a, 0x35, 0x33,
		0x3a, 0x62, 0x31, 0x3a, 0x64, 0x38, 0x3a, 0x34, 0x63, 0x3a, 0x32, 0x36, 0x3a, 0x32, 0x32, 0x3a, 0x38,
		0x37, 0x3a, 0x37, 0x33, 0x3a, 0x65, 0x38, 0x3a, 0x39, 0x66, 0x3a, 0x33, 0x30, 0x3a, 0x30, 0x61, 0x3a,
		0x35, 0x37, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x63, 0x3a, 0x34, 0x30, 0x3a, 0x65, 0x36, 0x3a, 0x38,
		0x35, 0x3a, 0x65, 0x35, 0x3a, 0x38, 0x36, 0x3a, 0x34, 0x64, 0x3a, 0x63, 0x35, 0x3a, 0x66, 0x66, 0x3a,
		0x37, 0x66, 0x3a, 0x63, 0x66, 0x3a, 0x64, 0x33, 0x3a, 0x32, 0x37, 0x3a, 0x38, 0x65, 0x3a, 0x61, 0x62,
		0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x34, 0x3a, 0x64, 0x30, 0x3a, 0x66, 0x30, 0x3a, 0x39, 0x35, 0x3a,
		0x66, 0x33, 0x3a, 0x32, 0x31, 0x3a, 0x34, 0x62, 0x3a, 0x35, 0x63, 0x3a, 0x31, 0x32, 0x3a, 0x35, 0x37,
		0x3a, 0x37, 0x33, 0x3a, 0x30, 0x31, 0x3a, 0x35, 0x64, 0x3a, 0x32, 0x62, 0x3a, 0x39, 0x38, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x61, 0x34, 0x3a, 0x66, 0x38, 0x3a, 0x63, 0x37, 0x3a, 0x36, 0x32, 0x3a, 0x34, 0x39,
		0x3a, 0x30, 0x62, 0x3a, 0x30, 0x65, 0x3a, 0x38, 0x35, 0x3a, 0x31, 0x64, 0x3a, 0x64, 0x66, 0x3a, 0x66,
		0x30, 0x3a, 0x64, 0x33, 0x3a, 0x65, 0x35, 0x3a, 0x31, 0x38, 0x3a, 0x35, 0x36, 0x3a, 0x0a, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x66, 0x65, 0x3a, 0x35, 0x30, 0x3a, 0x37, 0x39, 0x3a, 0x61, 0x31, 0x3a, 0x64, 0x31, 0x3a, 0x32,
		0x30, 0x3a, 0x66, 0x61, 0x3a, 0x31, 0x65, 0x3a, 0x66, 0x30, 0x3a, 0x64, 0x33, 0x3a, 0x36, 0x38, 0x3a,
		0x31, 0x37, 0x3a, 0x39, 0x61, 0x3a, 0x37, 0x38, 0x3a, 0x39, 0x64, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31,
		0x35, 0x3a, 0x36, 0x38, 0x3a, 0x35, 0x38, 0x3a, 0x62, 0x39, 0x3a, 0x39, 0x38, 0x3a, 0x35, 0x65, 0x3a,
		0x65, 0x33, 0x3a, 0x64, 0x35, 0x3a, 0x35, 0x63, 0x3a, 0x33, 0x63, 0x3a, 0x30, 0x61, 0x3a, 0x63, 0x31,
		0x3a, 0x63, 0x38, 0x3a, 0x63, 0x30, 0x3a, 0x31, 0x33, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x39, 0x3a,
		0x34, 0x39, 0x3a, 0x38, 0x33, 0x3a, 0x63, 0x39, 0x3a, 0x35, 0x39, 0x3a, 0x62, 0x33, 0x3a, 0x36, 0x33,
		0x3a, 0x34, 0x31, 0x3a, 0x32, 0x34, 0x3a, 0x31, 0x31, 0x3a, 0x65, 0x30, 0x3a, 0x30, 0x63, 0x3a, 0x39,
		0x62, 0x3a, 0x36, 0x62, 0x3a, 0x36, 0x62, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x37, 0x3a, 0x36, 0x31,
		0x3a, 0x66, 0x34, 0x3a, 0x39, 0x38, 0x3a, 0x62, 0x65, 0x3a, 0x63, 0x36, 0x3a, 0x30, 0x61, 0x3a, 0x36,
		0x35, 0x3a, 0x66, 0x31, 0x3a, 0x65, 0x65, 0x3a, 0x38, 0x35, 0x3a, 0x35, 0x38, 0x3a, 0x39, 0x38, 0x3a,
		0x32, 0x64, 0x3a, 0x39, 0x34, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x62, 0x3a, 0x34, 0x30, 0x3a, 0x62,
		0x38, 0x3a, 0x36, 0x38, 0x3a, 0x31, 0x33, 0x3a, 0x62, 0x32, 0x3a, 0x36, 0x62, 0x3a, 0x39, 0x32, 0x3a,
		0x32, 0x30, 0x3a, 0x39, 0x35, 0x3a, 0x61, 0x64, 0x3a, 0x34, 0x65, 0x3a, 0x38, 0x61, 0x3a, 0x31, 0x33,
		0x3a, 0x35, 0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x61, 0x3a, 0x33, 0x38, 0x3a, 0x39, 0x63, 0x3a,
		0x33, 0x62, 0x3a, 0x32, 0x64, 0x3a, 0x66, 0x64, 0x3a, 0x62, 0x66, 0x3a, 0x31, 0x62, 0x3a, 0x31, 0x38,
		0x3a, 0x30, 0x39, 0x3a, 0x34, 0x35, 0x3a, 0x31, 0x64, 0x3a, 0x61, 0x62, 0x3a, 0x62, 0x30, 0x3a, 0x32,
		0x36, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x31, 0x3a, 0x65, 0x61, 0x3a, 0x66, 0x33, 0x3a, 0x34, 0x65,
		0x3a, 0x64, 0x36, 0x3a, 0x62, 0x30, 0x3a, 0x34, 0x35, 0x3a, 0x34, 0x37, 0x3a, 0x31, 0x36, 0x3a, 0x30,
		0x38, 0x3a, 0x62, 0x38, 0x3a, 0x36, 0x31, 0x3a, 0x32, 0x65, 0x3a, 0x64, 0x38, 0x3a, 0x34, 0x31, 0x3a,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x35, 0x36, 0x3a, 0x62, 0x39, 0x3a, 0x63, 0x33, 0x3a, 0x65, 0x62, 0x3a, 0x36,
		0x33, 0x3a, 0x62, 0x31, 0x3a, 0x30, 0x62, 0x3a, 0x64, 0x33, 0x3a, 0x66, 0x30, 0x3a, 0x34, 0x30, 0x3a,
		0x34, 0x32, 0x3a, 0x32, 0x63, 0x3a, 0x32, 0x30, 0x3a, 0x39, 0x65, 0x3a, 0x34, 0x30, 0x3a, 0x0a, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x62, 0x38, 0x3a, 0x31, 0x39, 0x3a, 0x36, 0x36, 0x3a, 0x35, 0x32, 0x3a, 0x61, 0x34, 0x3a,
		0x38, 0x64, 0x3a, 0x30, 0x39, 0x3a, 0x63, 0x35, 0x3a, 0x63, 0x64, 0x3a, 0x34, 0x62, 0x3a, 0x65, 0x61,
		0x3a, 0x33, 0x61, 0x3a, 0x33, 0x38, 0x3a, 0x36, 0x36, 0x3a, 0x38, 0x38, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x31, 0x35, 0x3a, 0x63, 0x33, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x45, 0x78, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x36, 0x35,
		0x35, 0x33, 0x37, 0x20, 0x28, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e,
		0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x42, 0x61, 0x73, 0x69, 0x63, 0x20, 0x43, 0x6f,
		0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x41, 0x3a, 0x46, 0x41, 0x4c,
		0x53, 0x45, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4e, 0x65,
		0x74, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4f,
		0x70, 0x65, 0x6e, 0x53, 0x53, 0x4c, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20,
		0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x53, 0x75, 0x62,
		0x6a, 0x65, 0x63, 0x74, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
		0x65, 0x72, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x36, 0x39, 0x3a, 0x39, 0x38, 0x3a, 0x36, 0x44, 0x3a, 0x35, 0x41, 0x3a, 0x43,
		0x32, 0x3a, 0x35, 0x33, 0x3a, 0x43, 0x45, 0x3a, 0x38, 0x42, 0x3a, 0x39, 0x45, 0x3a, 0x45, 0x45, 0x3a,
		0x39, 0x44, 0x3a, 0x39, 0x30, 0x3a, 0x44, 0x34, 0x3a, 0x41, 0x37, 0x3a, 0x38, 0x36, 0x3a, 0x30, 0x35,
		0x3a, 0x34, 0x34, 0x3a, 0x34, 0x36, 0x3a, 0x45, 0x44, 0x3a, 0x43, 0x43, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x58, 0x35, 0x30, 0x39, 0x76, 0x33, 0x20, 0x41, 0x75,
		0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x49, 0x64, 0x65, 0x6e, 0x74,
		0x69, 0x66, 0x69, 0x65, 0x72, 0x3a, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6b, 0x65, 0x79, 0x69, 0x64, 0x3a, 0x44, 0x33, 0x3a, 0x35,
		0x34, 0x3a, 0x38, 0x41, 0x3a, 0x34, 0x42, 0x3a, 0x43, 0x32, 0x3a, 0x36, 0x34, 0x3a, 0x39, 0x34, 0x3a,
		0x42, 0x46, 0x3a, 0x39, 0x45, 0x3a, 0x46, 0x39, 0x3a, 0x34, 0x41, 0x3a, 0x38, 0x38, 0x3a, 0x43, 0x37,
		0x3a, 0x45, 0x39, 0x3a, 0x45, 0x32, 0x3a, 0x31, 0x30, 0x3a, 0x31, 0x30, 0x3a, 0x30, 0x37, 0x3a, 0x43,
		0x45, 0x3a, 0x39, 0x46, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
		0x72, 0x65, 0x20, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x3a, 0x20, 0x73, 0x68, 0x61,
		0x32, 0x35, 0x36, 0x57, 0x69, 0x74, 0x68, 0x52, 0x53, 0x41, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
		0x69, 0x6f, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x30, 0x3a, 0x64,
		0x66, 0x3a, 0x64, 0x61, 0x3a, 0x34, 0x33, 0x3a, 0x35, 0x35, 0x3a, 0x33, 0x65, 0x3a, 0x62, 0x30, 0x3a,
		0x30, 0x39, 0x3a, 0x63, 0x30, 0x3a, 0x31, 0x37, 0x3a, 0x32, 0x31, 0x3a, 0x66, 0x61, 0x3a, 0x62, 0x63,
		0x3a, 0x30, 0x38, 0x3a, 0x37, 0x33, 0x3a, 0x38, 0x31, 0x3a, 0x39, 0x39, 0x3a, 0x63, 0x64, 0x3a, 0x0a,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x62, 0x3a, 0x33, 0x35, 0x3a, 0x32, 0x62,
		0x3a, 0x31, 0x36, 0x3a, 0x64, 0x39, 0x3a, 0x63, 0x36, 0x3a, 0x30, 0x66, 0x3a, 0x30, 0x65, 0x3a, 0x63,
		0x62, 0x3a, 0x66, 0x38, 0x3a, 0x38, 0x65, 0x3a, 0x36, 0x33, 0x3a, 0x65, 0x66, 0x3a, 0x33, 0x30, 0x3a,
		0x65, 0x63, 0x3a, 0x64, 0x31, 0x3a, 0x64, 0x65, 0x3a, 0x30, 0x34, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x31, 0x30, 0x3a, 0x37, 0x39, 0x3a, 0x33, 0x65, 0x3a, 0x31, 0x31, 0x3a,
		0x66, 0x35, 0x3a, 0x38, 0x66, 0x3a, 0x65, 0x37, 0x3a, 0x64, 0x32, 0x3a, 0x39, 0x63, 0x3a, 0x65, 0x64,
		0x3a, 0x63, 0x34, 0x3a, 0x65, 0x37, 0x3a, 0x32, 0x33, 0x3a, 0x35, 0x39, 0x3a, 0x66, 0x39, 0x3a, 0x65,
		0x64, 0x3a, 0x31, 0x31, 0x3a, 0x35, 0x65, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x66, 0x35, 0x3a, 0x33, 0x66, 0x3a, 0x61, 0x66, 0x3a, 0x31, 0x32, 0x3a, 0x32, 0x65, 0x3a, 0x38,
		0x63, 0x3a, 0x36, 0x61, 0x3a, 0x33, 0x61, 0x3a, 0x64, 0x36, 0x3a, 0x33, 0x32, 0x3a, 0x36, 0x61, 0x3a,
		0x62, 0x39, 0x3a, 0x35, 0x62, 0x3a, 0x65, 0x38, 0x3a, 0x38, 0x64, 0x3a, 0x65, 0x63, 0x3a, 0x61, 0x37,
		0x3a, 0x65, 0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x66, 0x3a,
		0x65, 0x37, 0x3a, 0x34, 0x63, 0x3a, 0x31, 0x64, 0x3a, 0x35, 0x31, 0x3a, 0x36, 0x31, 0x3a, 0x36, 0x38,
		0x3a, 0x66, 0x65, 0x3a, 0x39, 0x37, 0x3a, 0x32, 0x37, 0x3a, 0x31, 0x64, 0x3a, 0x32, 0x34, 0x3a, 0x34,
		0x66, 0x3a, 0x37, 0x34, 0x3a, 0x66, 0x39, 0x3a, 0x36, 0x66, 0x3a, 0x38, 0x34, 0x3a, 0x61, 0x66, 0x3a,
		0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x3a, 0x32, 0x37, 0x3a, 0x30,
		0x35, 0x3a, 0x33, 0x63, 0x3a, 0x61, 0x62, 0x3a, 0x62, 0x64, 0x3a, 0x34, 0x64, 0x3a, 0x62, 0x64, 0x3a,
		0x36, 0x39, 0x3a, 0x66, 0x63, 0x3a, 0x63, 0x36, 0x3a, 0x65, 0x61, 0x3a, 0x62, 0x63, 0x3a, 0x65, 0x30,
		0x3a, 0x62, 0x36, 0x3a, 0x32, 0x66, 0x3a, 0x66, 0x64, 0x3a, 0x35, 0x63, 0x3a, 0x0a, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x33, 0x31, 0x3a, 0x35, 0x38, 0x3a, 0x64, 0x39, 0x3a, 0x37, 0x63,
		0x3a, 0x63, 0x30, 0x3a, 0x38, 0x38, 0x3a, 0x38, 0x39, 0x3a, 0x62, 0x37, 0x3a, 0x33, 0x31, 0x3a, 0x63,
		0x31, 0x3a, 0x35, 0x66, 0x3a, 0x31, 0x61, 0x3a, 0x38, 0x62, 0x3a, 0x32, 0x35, 0x3a, 0x37, 0x35, 0x3a,
		0x66, 0x33, 0x3a, 0x34, 0x37, 0x3a, 0x33, 0x34, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x63, 0x35, 0x3a, 0x32, 0x35, 0x3a, 0x61, 0x34, 0x3a, 0x64, 0x31, 0x3a, 0x65, 0x61, 0x3a,
		0x61, 0x35, 0x3a, 0x61, 0x62, 0x3a, 0x39, 0x30, 0x3a, 0x39, 0x61, 0x3a, 0x33, 0x64, 0x3a, 0x30, 0x65,
		0x3a, 0x32, 0x63, 0x3a, 0x36, 0x33, 0x3a, 0x39, 0x33, 0x3a, 0x61, 0x61, 0x3a, 0x61, 0x37, 0x3a, 0x36,
		0x64, 0x3a, 0x31, 0x38, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38, 0x38,
		0x3a, 0x65, 0x39, 0x3a, 0x63, 0x36, 0x3a, 0x39, 0x36, 0x3a, 0x31, 0x63, 0x3a, 0x39, 0x62, 0x3a, 0x37,
		0x62, 0x3a, 0x65, 0x36, 0x3a, 0x62, 0x33, 0x3a, 0x63, 0x36, 0x3a, 0x62, 0x38, 0x3a, 0x36, 0x35, 0x3a,
		0x64, 0x31, 0x3a, 0x30, 0x61, 0x3a, 0x39, 0x65, 0x3a, 0x33, 0x38, 0x3a, 0x30, 0x31, 0x3a, 0x62, 0x31,
		0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x39, 0x37, 0x3a, 0x32, 0x65, 0x3a,
		0x31, 0x63, 0x3a, 0x35, 0x32, 0x3a, 0x32, 0x35, 0x3a, 0x34, 0x30, 0x3a, 0x65, 0x38, 0x3a, 0x30, 0x34,
		0x3a, 0x38, 0x65, 0x3a, 0x64, 0x31, 0x3a, 0x62, 0x32, 0x3a, 0x63, 0x32, 0x3a, 0x31, 0x65, 0x3a, 0x66,
		0x30, 0x3a, 0x66, 0x37, 0x3a, 0x32, 0x33, 0x3a, 0x33, 0x38, 0x3a, 0x61, 0x36, 0x3a, 0x0a, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x63, 0x3a, 0x30, 0x37, 0x3a, 0x36, 0x38, 0x3a, 0x63,
		0x62, 0x3a, 0x65, 0x65, 0x3a, 0x31, 0x39, 0x3a, 0x38, 0x66, 0x3a, 0x31, 0x36, 0x3a, 0x66, 0x31, 0x3a,
		0x30, 0x38, 0x3a, 0x66, 0x36, 0x3a, 0x38, 0x39, 0x3a, 0x66, 0x66, 0x3a, 0x34, 0x30, 0x3a, 0x62, 0x35,
		0x3a, 0x33, 0x65, 0x3a, 0x39, 0x63, 0x3a, 0x39, 0x66, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
		0x20, 0x20, 0x20, 0x36, 0x63, 0x3a, 0x32, 0x64, 0x3a, 0x61, 0x39, 0x3a, 0x63, 0x36, 0x3a, 0x36, 0x35,
		0x3a, 0x65, 0x38, 0x3a, 0x34, 0x61, 0x3a, 0x33, 0x38, 0x3a, 0x38, 0x33, 0x3a, 0x63, 0x36, 0x3a, 0x35,
		0x39, 0x3a, 0x37, 0x38, 0x3a, 0x32, 0x33, 0x3a, 0x37, 0x61, 0x3a, 0x38, 0x34, 0x3a, 0x37, 0x36, 0x3a,
		0x35, 0x62, 0x3a, 0x30, 0x35, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x31,
		0x35, 0x3a, 0x36, 0x61, 0x3a, 0x63, 0x38, 0x3a, 0x65, 0x65, 0x3a, 0x33, 0x34, 0x3a, 0x65, 0x31, 0x3a,
		0x66, 0x38, 0x3a, 0x63, 0x30, 0x3a, 0x39, 0x66, 0x3a, 0x30, 0x38, 0x3a, 0x63, 0x33, 0x3a, 0x32, 0x35,
		0x3a, 0x31, 0x39, 0x3a, 0x39, 0x66, 0x3a, 0x38, 0x32, 0x3a, 0x62, 0x35, 0x3a, 0x38, 0x39, 0x3a, 0x37,
		0x30, 0x3a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x63, 0x3a, 0x38, 0x39,
		0x3a, 0x32, 0x63, 0x3a, 0x35, 0x37, 0x3a, 0x33, 0x66, 0x3a, 0x61, 0x64, 0x3a, 0x39, 0x64, 0x3a, 0x38,
		0x64, 0x3a, 0x37, 0x33, 0x3a, 0x31, 0x64, 0x3a, 0x34, 0x30, 0x3a, 0x33, 0x34, 0x3a, 0x37, 0x30, 0x3a,
		0x37, 0x61, 0x3a, 0x30, 0x35, 0x3a, 0x64, 0x30, 0x3a, 0x30, 0x33, 0x3a, 0x63, 0x61, 0x3a, 0x0a, 0x20,
		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x33, 0x3a, 0x63, 0x65, 0x3a, 0x35, 0x66, 0x3a,
		0x62, 0x38, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43, 0x45, 0x52,
		0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49,
		0x44, 0x6d, 0x54, 0x43, 0x43, 0x41, 0x6f, 0x47, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x42,
		0x41, 0x6a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b, 0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41,
		0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x52, 0x4d, 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51,
		0x51, 0x47, 0x45, 0x77, 0x4a, 0x44, 0x54, 0x6a, 0x45, 0x52, 0x0a, 0x4d, 0x41, 0x38, 0x47, 0x41, 0x31,
		0x55, 0x45, 0x43, 0x41, 0x77, 0x49, 0x55, 0x32, 0x68, 0x68, 0x62, 0x6d, 0x64, 0x6f, 0x59, 0x57, 0x6b,
		0x78, 0x45, 0x54, 0x41, 0x50, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x63, 0x4d, 0x43, 0x46, 0x4e, 0x6f,
		0x59, 0x57, 0x35, 0x6e, 0x61, 0x47, 0x46, 0x70, 0x4d, 0x51, 0x38, 0x77, 0x44, 0x51, 0x59, 0x44, 0x56,
		0x51, 0x51, 0x4b, 0x44, 0x41, 0x5a, 0x49, 0x0a, 0x64, 0x57, 0x46, 0x33, 0x5a, 0x57, 0x6b, 0x78, 0x43,
		0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x4d, 0x4d, 0x41, 0x6d, 0x4e, 0x68, 0x4d, 0x42,
		0x34, 0x58, 0x44, 0x54, 0x49, 0x79, 0x4d, 0x54, 0x45, 0x79, 0x4e, 0x54, 0x41, 0x7a, 0x4e, 0x44, 0x55,
		0x31, 0x4f, 0x46, 0x6f, 0x58, 0x44, 0x54, 0x49, 0x7a, 0x4d, 0x54, 0x45, 0x78, 0x4e, 0x6a, 0x41, 0x7a,
		0x4e, 0x44, 0x55, 0x31, 0x0a, 0x4f, 0x46, 0x6f, 0x77, 0x55, 0x6a, 0x45, 0x4c, 0x4d, 0x41, 0x6b, 0x47,
		0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4d, 0x43, 0x51, 0x30, 0x34, 0x78, 0x45, 0x54, 0x41, 0x50, 0x42,
		0x67, 0x4e, 0x56, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x46, 0x4e, 0x6f, 0x59, 0x57, 0x35, 0x6e, 0x61, 0x47,
		0x46, 0x70, 0x4d, 0x52, 0x45, 0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x48, 0x44, 0x41, 0x68,
		0x54, 0x0a, 0x61, 0x47, 0x46, 0x75, 0x5a, 0x32, 0x68, 0x68, 0x61, 0x54, 0x45, 0x50, 0x4d, 0x41, 0x30,
		0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x47, 0x53, 0x48, 0x56, 0x68, 0x64, 0x32, 0x56, 0x70,
		0x4d, 0x51, 0x77, 0x77, 0x43, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x44, 0x44, 0x41, 0x4e, 0x72, 0x59,
		0x32, 0x30, 0x77, 0x67, 0x67, 0x45, 0x69, 0x4d, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x0a, 0x53,
		0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77,
		0x41, 0x77, 0x67, 0x67, 0x45, 0x4b, 0x41, 0x6f, 0x49, 0x42, 0x41, 0x51, 0x43, 0x71, 0x56, 0x43, 0x6e,
		0x6a, 0x79, 0x6f, 0x32, 0x79, 0x79, 0x69, 0x7a, 0x69, 0x6c, 0x58, 0x67, 0x66, 0x32, 0x37, 0x4f, 0x66,
		0x41, 0x52, 0x62, 0x43, 0x70, 0x46, 0x4b, 0x79, 0x4b, 0x32, 0x65, 0x64, 0x0a, 0x74, 0x7a, 0x74, 0x4d,
		0x57, 0x63, 0x6d, 0x53, 0x59, 0x72, 0x55, 0x67, 0x6a, 0x63, 0x4c, 0x74, 0x2b, 0x35, 0x4d, 0x74, 0x50,
		0x52, 0x48, 0x67, 0x79, 0x7a, 0x68, 0x75, 0x79, 0x67, 0x46, 0x34, 0x4b, 0x53, 0x49, 0x56, 0x6e, 0x54,
		0x4f, 0x58, 0x63, 0x68, 0x30, 0x55, 0x4b, 0x4a, 0x2f, 0x50, 0x55, 0x37, 0x48, 0x59, 0x54, 0x43, 0x59,
		0x69, 0x68, 0x33, 0x50, 0x6f, 0x6e, 0x7a, 0x41, 0x4b, 0x0a, 0x56, 0x34, 0x78, 0x41, 0x35, 0x6f, 0x58,
		0x6c, 0x68, 0x6b, 0x33, 0x46, 0x2f, 0x33, 0x2f, 0x50, 0x30, 0x79, 0x65, 0x4f, 0x71, 0x36, 0x54, 0x51,
		0x38, 0x4a, 0x58, 0x7a, 0x49, 0x55, 0x74, 0x63, 0x45, 0x6c, 0x64, 0x7a, 0x41, 0x56, 0x30, 0x72, 0x6d,
		0x4b, 0x54, 0x34, 0x78, 0x32, 0x4a, 0x4a, 0x43, 0x77, 0x36, 0x46, 0x48, 0x64, 0x2f, 0x77, 0x30, 0x2b,
		0x55, 0x59, 0x56, 0x76, 0x35, 0x51, 0x0a, 0x65, 0x61, 0x48, 0x52, 0x49, 0x50, 0x6f, 0x65, 0x38, 0x4e,
		0x4e, 0x6f, 0x46, 0x35, 0x70, 0x34, 0x6e, 0x52, 0x56, 0x6f, 0x57, 0x4c, 0x6d, 0x59, 0x58, 0x75, 0x50,
		0x56, 0x58, 0x44, 0x77, 0x4b, 0x77, 0x63, 0x6a, 0x41, 0x45, 0x78, 0x6c, 0x4a, 0x67, 0x38, 0x6c, 0x5a,
		0x73, 0x32, 0x4e, 0x42, 0x4a, 0x42, 0x48, 0x67, 0x44, 0x4a, 0x74, 0x72, 0x61, 0x36, 0x64, 0x68, 0x39,
		0x4a, 0x69, 0x2b, 0x0a, 0x78, 0x67, 0x70, 0x6c, 0x38, 0x65, 0x36, 0x46, 0x57, 0x4a, 0x67, 0x74, 0x6c,
		0x43, 0x74, 0x41, 0x75, 0x47, 0x67, 0x54, 0x73, 0x6d, 0x75, 0x53, 0x49, 0x4a, 0x57, 0x74, 0x54, 0x6f,
		0x6f, 0x54, 0x56, 0x61, 0x6f, 0x34, 0x6e, 0x44, 0x73, 0x74, 0x2f, 0x62, 0x38, 0x62, 0x47, 0x41, 0x6c,
		0x46, 0x48, 0x61, 0x75, 0x77, 0x4a, 0x75, 0x48, 0x71, 0x38, 0x30, 0x37, 0x57, 0x73, 0x45, 0x56, 0x48,
		0x0a, 0x46, 0x67, 0x69, 0x34, 0x59, 0x53, 0x37, 0x59, 0x51, 0x56, 0x61, 0x35, 0x77, 0x2b, 0x74, 0x6a,
		0x73, 0x51, 0x76, 0x54, 0x38, 0x45, 0x42, 0x43, 0x4c, 0x43, 0x43, 0x65, 0x51, 0x4c, 0x67, 0x5a, 0x5a,
		0x6c, 0x4b, 0x6b, 0x6a, 0x51, 0x6e, 0x46, 0x7a, 0x55, 0x76, 0x71, 0x4f, 0x6a, 0x68, 0x6d, 0x69, 0x42,
		0x58, 0x44, 0x41, 0x67, 0x4d, 0x42, 0x41, 0x41, 0x47, 0x6a, 0x65, 0x7a, 0x42, 0x35, 0x0a, 0x4d, 0x41,
		0x6b, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x51, 0x43, 0x4d, 0x41, 0x41, 0x77, 0x4c, 0x41, 0x59,
		0x4a, 0x59, 0x49, 0x5a, 0x49, 0x41, 0x59, 0x62, 0x34, 0x51, 0x67, 0x45, 0x4e, 0x42, 0x42, 0x38, 0x57,
		0x48, 0x55, 0x39, 0x77, 0x5a, 0x57, 0x35, 0x54, 0x55, 0x30, 0x77, 0x67, 0x52, 0x32, 0x56, 0x75, 0x5a,
		0x58, 0x4a, 0x68, 0x64, 0x47, 0x56, 0x6b, 0x49, 0x45, 0x4e, 0x6c, 0x0a, 0x63, 0x6e, 0x52, 0x70, 0x5a,
		0x6d, 0x6c, 0x6a, 0x59, 0x58, 0x52, 0x6c, 0x4d, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44, 0x67,
		0x51, 0x57, 0x42, 0x42, 0x52, 0x70, 0x6d, 0x47, 0x31, 0x61, 0x77, 0x6c, 0x50, 0x4f, 0x69, 0x35, 0x37,
		0x75, 0x6e, 0x5a, 0x44, 0x55, 0x70, 0x34, 0x59, 0x46, 0x52, 0x45, 0x62, 0x74, 0x7a, 0x44, 0x41, 0x66,
		0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x4d, 0x45, 0x0a, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x54, 0x54,
		0x56, 0x49, 0x70, 0x4c, 0x77, 0x6d, 0x53, 0x55, 0x76, 0x35, 0x37, 0x35, 0x53, 0x6f, 0x6a, 0x48, 0x36,
		0x65, 0x49, 0x51, 0x45, 0x41, 0x66, 0x4f, 0x6e, 0x7a, 0x41, 0x4e, 0x42, 0x67, 0x6b, 0x71, 0x68, 0x6b,
		0x69, 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4f, 0x43, 0x41, 0x51, 0x45,
		0x41, 0x4d, 0x4e, 0x2f, 0x61, 0x0a, 0x51, 0x31, 0x55, 0x2b, 0x73, 0x41, 0x6e, 0x41, 0x46, 0x79, 0x48,
		0x36, 0x76, 0x41, 0x68, 0x7a, 0x67, 0x5a, 0x6e, 0x4e, 0x47, 0x7a, 0x55, 0x72, 0x46, 0x74, 0x6e, 0x47,
		0x44, 0x77, 0x37, 0x4c, 0x2b, 0x49, 0x35, 0x6a, 0x37, 0x7a, 0x44, 0x73, 0x30, 0x64, 0x34, 0x45, 0x45,
		0x48, 0x6b, 0x2b, 0x45, 0x66, 0x57, 0x50, 0x35, 0x39, 0x4b, 0x63, 0x37, 0x63, 0x54, 0x6e, 0x49, 0x31,
		0x6e, 0x35, 0x0a, 0x37, 0x52, 0x46, 0x65, 0x39, 0x54, 0x2b, 0x76, 0x45, 0x69, 0x36, 0x4d, 0x61, 0x6a,
		0x72, 0x57, 0x4d, 0x6d, 0x71, 0x35, 0x57, 0x2b, 0x69, 0x4e, 0x37, 0x4b, 0x66, 0x6c, 0x50, 0x2b, 0x64,
		0x4d, 0x48, 0x56, 0x46, 0x68, 0x61, 0x50, 0x36, 0x58, 0x4a, 0x78, 0x30, 0x6b, 0x54, 0x33, 0x54, 0x35,
		0x62, 0x34, 0x53, 0x76, 0x2f, 0x79, 0x63, 0x46, 0x50, 0x4b, 0x75, 0x39, 0x54, 0x62, 0x31, 0x70, 0x0a,
		0x2f, 0x4d, 0x62, 0x71, 0x76, 0x4f, 0x43, 0x32, 0x4c, 0x2f, 0x31, 0x63, 0x4d, 0x56, 0x6a, 0x5a, 0x66,
		0x4d, 0x43, 0x49, 0x69, 0x62, 0x63, 0x78, 0x77, 0x56, 0x38, 0x61, 0x69, 0x79, 0x56, 0x31, 0x38, 0x30,
		0x63, 0x30, 0x78, 0x53, 0x57, 0x6b, 0x30, 0x65, 0x71, 0x6c, 0x71, 0x35, 0x43, 0x61, 0x50, 0x51, 0x34,
		0x73, 0x59, 0x35, 0x4f, 0x71, 0x70, 0x32, 0x30, 0x59, 0x69, 0x4f, 0x6e, 0x47, 0x0a, 0x6c, 0x68, 0x79,
		0x62, 0x65, 0x2b, 0x61, 0x7a, 0x78, 0x72, 0x68, 0x6c, 0x30, 0x51, 0x71, 0x65, 0x4f, 0x41, 0x47, 0x78,
		0x6c, 0x79, 0x34, 0x63, 0x55, 0x69, 0x56, 0x41, 0x36, 0x41, 0x53, 0x4f, 0x30, 0x62, 0x4c, 0x43, 0x48,
		0x76, 0x44, 0x33, 0x49, 0x7a, 0x69, 0x6d, 0x54, 0x41, 0x64, 0x6f, 0x79, 0x2b, 0x34, 0x5a, 0x6a, 0x78,
		0x62, 0x78, 0x43, 0x50, 0x61, 0x4a, 0x2f, 0x30, 0x43, 0x31, 0x0a, 0x50, 0x70, 0x79, 0x66, 0x62, 0x43,
		0x32, 0x70, 0x78, 0x6d, 0x58, 0x6f, 0x53, 0x6a, 0x69, 0x44, 0x78, 0x6c, 0x6c, 0x34, 0x49, 0x33, 0x71,
		0x45, 0x64, 0x6c, 0x73, 0x46, 0x46, 0x57, 0x72, 0x49, 0x37, 0x6a, 0x54, 0x68, 0x2b, 0x4d, 0x43, 0x66,
		0x43, 0x4d, 0x4d, 0x6c, 0x47, 0x5a, 0x2b, 0x43, 0x74, 0x59, 0x6c, 0x77, 0x54, 0x49, 0x6b, 0x73, 0x56,
		0x7a, 0x2b, 0x74, 0x6e, 0x59, 0x31, 0x7a, 0x0a, 0x48, 0x55, 0x41, 0x30, 0x63, 0x48, 0x6f, 0x46, 0x30,
		0x41, 0x50, 0x4b, 0x30, 0x38, 0x35, 0x66, 0x75, 0x41, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
		0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
		0x2d, 0x2d, 0x2d, 0x0a,
	}
)

var (
	certpath     = "../cert/"
	ktafilename  = "kta.crt"
	rootfilename = "ca.crt"
	kcmfilename  = "kcm.crt"
	ktaid        = "ktaid"
	ik           = "IK"
)
var (
	deviceId int64 = 17
	//deviceId int64 = 1238263726351263121
	testCases1 = []time.Duration{time.Second, time.Second * 3, time.Millisecond * 10}
)

func TestDeleteKey(t *testing.T) {
	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	trustmgr.CreateTrustManager(constDB, constDNS)
	defer trustmgr.ReleaseTrustManager()
	regtime := time.Time{}
	trustmgr.RegisterClientByID(deviceId, regtime, ik)
	defer trustmgr.DeleteClientByID(deviceId)

	c, err := trustmgr.GetCache(deviceId)
	if err != nil {
		t.Errorf(constgetcachefailed, err)
	}
	c.UpdateHeartBeat(testCases1[0])
	c.UpdateTrustReport(testCases1[0])
	c.SetTaTrusted(ktaid, cache.StrTrusted)
	taid := []byte{'1'}
	keyid := []byte{'t', 'e', 's', 't', 'k', 'e', 'y', '1'}
	ciphertext := "text1"
	str_taid := string(taid)
	str_keyid := string(keyid)
	_, err = kdb.SaveKeyInfo(str_taid, str_keyid, ciphertext)
	if err != nil {
		t.Logf(constsavekeyinfofailed, err)
	}

	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	err = SaveCert(ktacert, certpath, ktafilename)
	if err != nil {
		t.Errorf(constsavektacertfailed, err)
	}
	defer os.RemoveAll(certpath)
	base64_pubKey := base64.StdEncoding.EncodeToString(ktacert)
	_, err = kdb.SavePubKeyInfo(deviceId, base64_pubKey)
	if err != nil {
		t.Errorf("save public key in database failed, error: %v", err)
	}
	defer kdb.DeletePubKeyInfo(deviceId)

	//_, _, err = DeleteKey(taid, keyid)
	_, _, err = DeleteKey(taid, keyid, ktaid, deviceId)
	if err == nil {
		t.Logf("delete key information success")
	} else {
		t.Errorf("test DeleteKey failed, error: %v", err)
	}
}

func TestVerifyKTAPubKeyCert(t *testing.T) {
	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	err := SaveCert(ktacert, certpath, ktafilename)
	if err != nil {
		t.Errorf(constsavektacertfailed, err)
	}
	err = SaveCert(rootcert, certpath, rootfilename)
	if err != nil {
		t.Errorf("save Root Cert failed, error: %v", err)
	}
	defer os.RemoveAll(certpath)

	err = VerifyKTAPubKeyCert(deviceId, ktacert)
	if err == nil {
		t.Logf("verify KTAPubKeyCert success")
	} else {
		t.Errorf("test KTAPubKeyCert failed, error: %v", err)
	}
	defer kdb.DeletePubKeyInfo(deviceId)
}

func TestSendKCMPubKeyCert(t *testing.T) {
	err := SaveCert(kcmcert, certpath, kcmfilename)
	if err != nil {
		t.Errorf("save KCM Cert failed, error: %v", err)
	}
	defer os.RemoveAll(certpath)
	_, err = SendKCMPubKeyCert()
	if err == nil {
		t.Logf("test send kcm public key cert success")
	} else {
		t.Errorf("test send kcm public key cert failed, error: %v", err)
	}
}

func TestGenerateNewKey(t *testing.T) {
	go kmsServer.ExampleServer()
	defer kmsServer.StopServer()
	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	trustmgr.CreateTrustManager(constDB, constDNS)
	defer trustmgr.ReleaseTrustManager()
	regtime := time.Time{}
	trustmgr.RegisterClientByID(deviceId, regtime, ik)
	defer trustmgr.DeleteClientByID(deviceId)

	c, err := trustmgr.GetCache(deviceId)
	if err != nil {
		t.Errorf(constgetcachefailed, err)
	}
	c.UpdateHeartBeat(testCases1[0])
	c.UpdateTrustReport(testCases1[0])
	c.SetTaTrusted(ktaid, cache.StrTrusted)
	taid := []byte("taid")
	account := []byte("account")
	password := []byte("password")
	hostkeyid := []byte("hostkeyid")
	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	err = SaveCert(ktacert, certpath, ktafilename)
	if err != nil {
		t.Errorf(constsavektacertfailed, err)
	}
	defer os.RemoveAll(certpath)
	base64_pubKey := base64.StdEncoding.EncodeToString(ktacert)
	_, err = kdb.SavePubKeyInfo(deviceId, base64_pubKey)
	if err != nil {
		t.Errorf("save public key in database failed, error: %v", err)
	}
	defer kdb.DeletePubKeyInfo(deviceId)
	_, _, _, _, keyid, err := GenerateNewKey(taid, account, password, hostkeyid, ktaid, deviceId)
	if err == nil {
		t.Logf("test generate new key success")
	} else {
		t.Errorf("test generate new key failed, error: %v", err)
	}
	defer kdb.DeleteKeyInfo(string(taid), string(keyid))
}

func TestGetKey(t *testing.T) {
	go kmsServer.ExampleServer()
	defer kmsServer.StopServer()

	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	trustmgr.CreateTrustManager(constDB, constDNS)
	defer trustmgr.ReleaseTrustManager()
	regtime := time.Time{}
	trustmgr.RegisterClientByID(deviceId, regtime, ik)
	defer trustmgr.DeleteClientByID(deviceId)

	c, err := trustmgr.GetCache(deviceId)
	if err != nil {
		t.Errorf(constgetcachefailed, err)
	}
	c.UpdateHeartBeat(testCases1[0])
	c.UpdateTrustReport(testCases1[0])
	c.SetTaTrusted(ktaid, cache.StrTrusted)
	taid := []byte("taid")
	account := []byte("account")
	password := []byte("password")
	keyid := []byte("keyid")
	hostkeyid := []byte("hostkeyid")
	kdb.CreateKdbManager(constDB, constDNS)
	defer kdb.ReleaseKdbManager()
	err = SaveCert(ktacert, certpath, ktafilename)
	if err != nil {
		t.Errorf(constsavektacertfailed, err)
	}
	defer os.RemoveAll(certpath)
	base64_pubKey := base64.StdEncoding.EncodeToString(ktacert)
	_, err = kdb.SavePubKeyInfo(deviceId, base64_pubKey)
	if err != nil {
		t.Errorf("save public key in database failed, error: %v", err)
	}
	defer kdb.DeletePubKeyInfo(deviceId)

	_, err = kdb.SaveKeyInfo(string(taid), string(keyid), "89Kl9gkvWImjh5CUsADSbmFyDb7s5q+voUf2ym4u6dc=")
	if err != nil {
		t.Errorf("save key in database failed, error: %v", err)
	}
	defer kdb.DeleteKeyInfo(string(taid), string(keyid))

	_, _, _, _, _, err = GetKey(taid, account, password, keyid, hostkeyid, ktaid, deviceId)
	if err == nil {
		t.Logf("test get key success")
	} else {
		t.Errorf("test get key failed, error: %v", err)
	}
	defer kdb.DeleteKeyInfo(string(taid), string(keyid))
}

func TestSaveCert(t *testing.T) {
	err := SaveCert(ktacert, certpath, ktafilename)
	if err == nil {
		t.Logf("test save cert success")
	} else {
		t.Errorf("test save cert failed, error: %v", err)
	}
	defer os.RemoveAll(certpath)
}
